#ifndef __GDST_ARRAY_H__
#define __GDST_ARRAY_H__

#ifdef GDST_BUILD
	#define GDST_API __declspec(dllexport)
#else
	#define GDST_API __declspec(dllimport)
#endif

typedef struct array_t *array_p;

GDST_API array_p gdst_arraynew(size_t size, size_t elsize);
GDST_API void gdst_arrayfree(array_p *array);
GDST_API int gdst_arraypush(array_p self, void *el);
GDST_API int gdst_arrayputat(array_p self, void *el, size_t index);
GDST_API int gdst_arrayremat(array_p self, size_t index);
GDST_API void* gdst_arraypop(array_p self);
GDST_API void* gdst_arraygetat(array_p self, size_t index);
GDST_API size_t gdst_arraycount(array_p self);

#endif
